package ar.edu.utn.frba.disenio;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import org.joda.time.Duration;

import ar.edu.utn.frba.disenio.aerolineas.Aerolineas;

public class Vuelo {

	private List<Asiento> asientos = new ArrayList<Asiento>();
	
	public int getPopularidad(Aerolineas aerolineas)
	{
		int popularidadVuelo = 0;
		for(Asiento asiento : asientos)
		{
			int popularidadAsiento = aerolineas.getCantidadDeCompras(asiento.getCodigoVuelo());
			if(popularidadAsiento > popularidadVuelo)
			{
				popularidadVuelo = popularidadAsiento;
			}
		}
		return popularidadVuelo;
	}
	
	public boolean isConEscalas()
	{
		return (getAsientos().size() > 1);
	}

	public List<Asiento> getAsientos() {
		return asientos;
	}

	public void setAsientos(List<Asiento> asientos) {
		this.asientos = asientos;
	}
	
	public void addAsiento(Asiento asiento)
	{
		this.asientos.add(asiento);
	}
	
	public int getEscalas()
	{
		return this.asientos.size()-1;
	}
	
	public boolean equals(Vuelo vuelo)
	{
		return vuelo.getAsientos().equals(this.asientos);
		
	}

	public BigDecimal getPrecio() {
		BigDecimal precioVuelo = new BigDecimal(0);
		for(Asiento asiento : asientos)
		{
			precioVuelo = precioVuelo.add(asiento.getPrecio());
		}
		return precioVuelo;
	}

	public Duration getTiempoDeVuelo() {
		Asiento primerAsiento = asientos.get(0);
		Asiento ultimoAsiento = asientos.get(asientos.size()-1);
		
		return DateParser.duracionEntre(primerAsiento.getSalida(), ultimoAsiento.getLlegada());
	}
	
}
